﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;

namespace oneday
{
    //定义一个学生类
    public class Student
    {
        //字段
        private string name;
        private int age;

        //属性
        public string Name
        {
            get { return name; }//返回字段name
            set { name = value; }//给name赋值
        }

        public int Age
        {
            get { return age; }
            set { age = value >= 0 ? value : 0; }
        } 
        //构造函数
        public Student(string name,int age)
        {
            this.name = name;
            this.age = age;
        }

        //方法
        public void Introduce()
        {
            Console.WriteLine($"大家好这是第一天下午我是{name}，年龄是{age}");
        }

       
        
    }
    // 定义一个动物基类
    public class Animal 
    {
        public string Name { get; set; }
        public Animal(string name)
        {
            Name = name;
        }
        //虚方法
        public virtual void Speak()
        {
            Console.WriteLine($"{Name}发出声音");

        }

       
       
    }
    // 定义一个狗类，继承自 Animal
    public class Dog : Animal
    {
        //: base(name) 调用 Animal 类的构造函数，并将 name 参数传递给Animal。
        public Dog(string name) : base(name)
        {

        }
        //重写Speak方法
        public override void Speak()
        {
            Console.WriteLine($"{Name}叫，汪汪汪！");
        }
    }
   // 接口与抽象类
   public interface ILogger
    {
        void Log(string message);
    }
    //定义一个文件日志类，实现ILogger接口
    public class FileLogger:ILogger
    {
        public void Log(string message)
        {
            Console.WriteLine($"文件日志：{message}");
        }
    }

    //1
    //** 创建一个 `Car` 类**，包含品牌（`Brand`）、价格（`Price`）属性，
    //    并实现一个 `Run()` 方法
    public class Car
    {
        public string Brand { get; set; }//品牌
        public double Price { get; set; }//价格

        public virtual void Run()
        {
            Console.WriteLine($"{Brand} 汽车正在行驶，价格为 {Price} 万元。");
        }
    }
    //2
    //** 创建一个 `ElectricCar` 类**，继承自 `Car` 类，重写 `Run()` 方法，
    //    输出“电动车正在静音行驶”。

    public class ElectricCar : Car 
    {  
        public override void Run()
        {
            Console.WriteLine("电动车正在静音行驶");
        }
    }

    //** 创建一个 `ILogger` 接口**，包含 `Log(string message)` 方法，
    //    并实现一个 `ConsoleLogger` 类。
    public interface ILogger1 
    {
        void Log(string message);
    }

    public class ConsoleLogger : ILogger
    {
        public void Log(string message)
        {
            Console.WriteLine($"控制台日志：{message}");
        }
    }
    public class Class111
    {
        //    ** 使用集合**：

        //- 创建一个 `List<string>`，添加 5 个名字，遍历输出。

        //- 创建一个 `Dictionary<string, int>`，保存学生成绩（姓名-分数），并查询某个学生的分数。
      public void Maina()
        {
            Console.WriteLine($"-----------------方法接口-----------------------");

            Car car = new Car() { Brand ="特斯拉", Price =60};
            car.Run();
            Car car1 = new ElectricCar();
            car1.Run();
            ILogger logger = new ConsoleLogger();
            logger.Log("这是一条日志信息");
            Console.WriteLine($"-----------------集合遍历-----------------------");

            List<string> list = new List<string> { "张三", "李四", "王五", "赵六", "孙七" };
            foreach (string name in list)
            {
                Console.WriteLine(name);
            }
            Console.WriteLine($"-----------------集合字典练习-----------------------");

            Dictionary<string, int> keys = new Dictionary<string, int>()
            {
                {"张三" ,30},
                 {"李四" ,50},
                  {"王五" ,80}
            };
            Console.WriteLine(list[0]);
            Console.WriteLine(keys["张三"]);

            Console.WriteLine($"-----------------文件练习-----------------------");

            //**文件操作练习 * *：

            //-创建一个文本文件，写入一段内容，然后读取并输出。
            string xxontent = "这是测试文字";
            //FileStream.
            string path = "C:\\Users\\zldzz\\Desktop\\test.txt";
            File.WriteAllText(path, xxontent);
            string readContent = File.ReadAllText(path);
            Console.WriteLine(readContent);
        }
      
    }

    
}
